package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.qo.QueryCourseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVo;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;

/**
 * @author wz
 * @description:
 * @date 2021-12-08
 */
@Api(value = "课程基本信息Api接口", tags = "内容-课程基本业务信息Api接口")
public interface CourseBaseApi {

    /**
     * 分页查询课程基本信息
     *
     * @param params
     * @param model
     * @return
     */
    @ApiOperation("分页查询课程基本信息")
    PageVO queryCourseList(PageRequestParams params, QueryCourseModel model);

    /**
     * 保存课程基本信息
     *
     * @param courseBaseVo
     * @return
     */
    @ApiOperation("课程基础信息创建")
    CourseBaseDTO createCourseBase(CourseBaseVo courseBaseVo);

    /**
     * 课程基本信息修改
     *
     * @param courseBaseVo
     * @return
     */
    @ApiOperation("课程基础信息修改")
    CourseBaseDTO modifyCourseBase(CourseBaseVo courseBaseVo);

    /**
     * 根据课程id查询课程基础新信息
     *
     * @param courseBaseId
     * @return
     */
    @ApiOperation("根据课程id查询课程基础新信息")
    CourseBaseDTO getCourseBaseById(Long courseBaseId);

    /**
     * 教学机构提交课程
     *
     * @param courseBaseId
     */
    @ApiOperation("教学机构提交课程")
    void commitCourseBase(Long courseBaseId);

    @ApiOperation("根据Id删除课程信息")
    @ApiImplicitParam(name = "courseBaseId", value = "课程id值", required = true, paramType = "path")
    void removeCoursebase(Long courseBaseId);


    @ApiOperation("课程预览")
    Object preview(Long courseId, Long companyId);

    @ApiOperation("课程发布")
    void publish(Long courseBaseId);

}
